#include <IRremote.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x47);
int RECV_PIN = A0;

void setup(){
  Serial.begin(9600);
  IrReceiver.begin(RECV_PIN);
  pwm.begin();
  pwm.setPWMFreq(50);

}

void loop(){
if (IrReceiver.decode()){

if (IrReceiver.decodedIRData.command == 70)   //FF
     {
          pwm.setPWM(0,0,4095);
          pwm.setPWM(1,0,1024);
          pwm.setPWM(2,0,0);
          pwm.setPWM(3,0,2048);
         // pwm.setPWM(4,0,1000);
         // pwm.setPWM(5,0,0);
         // pwm.setPWM(6,0,1000);
         // pwm.setPWM(7,0,0);

     }
if (IrReceiver.decodedIRData.command == 21)   //BACK
     {
          pwm.setPWM(0,0,0);
          pwm.setPWM(1,0,2048);
          pwm.setPWM(2,0,4095);
          pwm.setPWM(3,0,1024);
         // pwm.setPWM(4,0,1000);
         // pwm.setPWM(5,0,0);
         // pwm.setPWM(6,0,1000);
         // pwm.setPWM(7,0,0);

     }

     if (IrReceiver.decodedIRData.command == 68)  //L
     {
          pwm.setPWM(0,0,0);
          pwm.setPWM(1,0,2048);
          pwm.setPWM(2,0,0);
          pwm.setPWM(3,0,2048);
          pwm.setPWM(4,0,4095);
          pwm.setPWM(5,0,1024);
          pwm.setPWM(6,0,4095);
          pwm.setPWM(7,0,1024);

     }

if (IrReceiver.decodedIRData.command == 67)  //R
     {
          pwm.setPWM(0,0,4095);
          pwm.setPWM(1,0,1024);
          pwm.setPWM(2,0,4095);
          pwm.setPWM(3,0,1024);
          pwm.setPWM(4,0,0);
          pwm.setPWM(5,0,2048);
          pwm.setPWM(6,0,0);
          pwm.setPWM(7,0,2048);

     }

if (IrReceiver.decodedIRData.command == 64) //STOP
     {
          pwm.setPWM(0,0,4096);
          pwm.setPWM(1,0,4096);
          pwm.setPWM(2,0,4096);
          pwm.setPWM(3,0,4096);
          pwm.setPWM(4,0,4096);
          pwm.setPWM(5,0,4096);
          pwm.setPWM(6,0,4096);
          pwm.setPWM(7,0,4096);

     }




Serial.println(IrReceiver.decodedIRData.command);
IrReceiver.resume();

}

}